package com.wargameproject.unite;

import com.wargameproject.Case;
import com.wargameproject.Partie;

public abstract class UniteNavale extends Unite {

	public void attaquer(Unite unit) {
		float bonusDefense;
		if(unit.position.cliquableAttaque && this.peutAttaquer) {
			if (!unit.volant){
				bonusDefense = unit.position.terrain.protection;
			}
			else {
				bonusDefense = 0;
			}
			unit.vie = unit.vie - (int)Math.ceil(this.attaque * this.vie/10 * (100-unit.armureSurSiege)/100 * (100-bonusDefense)/100);
			if(unit.vie>0) {
				unit.riposter(this);
			}
			else {
				unit.position.unite = null;
			}
			this.peutAttaquer = false;
			this.peutBouger = false;
			Partie.brouillardDeGuerre();
		}
	}
	
	public void riposter(Unite unit) {
		float bonusDefense;
		if(this.peutAttaquer && this.position.distance(unit.position)<=this.porteeAttaque) {
			if (!unit.volant){
				bonusDefense = unit.position.terrain.protection;
			}
			else {
				bonusDefense = 0;
			}
			unit.vie = unit.vie - (int)Math.ceil(this.attaque * this.vie/10 * (100-unit.armureSurSiege)/100 * (100-bonusDefense)/100);
			this.peutAttaquer = false;
			this.peutBouger = false;
			if(unit.vie<=0) {
				unit.position.unite = null;
			}
		}
	}
	
	public void deplacer (Case c) {
		if (c.cliquableDeplacement && this.peutBouger) {
			c.unite = this;
			this.position.unite = null;
			this.position = c;
			this.peutBouger = false;
			this.casesCliquables();
		}
	}

	public void casesCliquables () {
		Partie.brouillardDeGuerre();
		Partie.casePrecedente = Partie.caseCliquee;
		if(this.peutBouger) {
			this.position.casesCliquablesDeplacementNavale(this.mouvement);
		}
		if(this.peutAttaquer) {
			this.position.casesCliquablesUniteEnnemie(this.porteeAttaque);
		}
		Partie.clickSurUnite = true;
		this.position.cliquableDeplacement = true;
		Partie.grille.invalidate();
		if (!Case.caseAttaquePossible && !this.peutBouger) {
			this.peutAttaquer = false;
			Partie.brouillardDeGuerre();
		}
	}
}
